#ifndef RP2VISIBLESET_H
#define RP2VISIBLESET_H

#include "Rp2VisibleObject.h"

namespace Rp2
{
	
class VisibleSet
{
public:
	VisibleSet(int iMaxQuantity = 0, int iGrowBy = 0);
	virtual ~VisibleSet();

	int GetQuantity () const;
    VisibleObject* GetVisible ();
    VisibleObject& GetVisible (int i);

    // Creates a VisibleObject from the input and appends it to the end of the
    // VisibleObject array.
    void Insert (Spatial* pkObject, Effect* pkGlobalEffect);
    void Clear ();
    void Resize (int iMaxQuantity, int iGrowBy);

private:
    enum
    {
        VS_DEFAULT_MAX_QUANTITY = 32,
        VS_DEFAULT_GROWBY = 32,
    };

    int m_iMaxQuantity, m_iGrowBy, m_iQuantity;
    VisibleObject* m_akVisible;
};

#include "Rp2VisibleSet.inl"

}

#endif